package com.easyedu.dean.entity.dto.request;

import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * @author mfy
 */
@Data
public class ReqCourse {

    /**
     * 功能描述:开课学院id
     */
    @Min(value = 1, message = "开课学院id 必须大于0")
    @NotNull(message = "开课学院id 不能为空")
    private long openInstituteId;

    /**
     * 功能描述:开课学院名称
     */
    @NotNull(message = "开课学院名称 不能为空")
    private String openInstituteName;

    /**
     * 功能描述:课程代码
     */
    @NotNull(message = "课程代码 不能为空")
    private String courseCode;

    /**
     * 功能描述:课程名称
     */
    @NotNull(message = "课程名称 不能为空")
    private String courseName;

    /**
     * 功能描述:课程性质</br>
     * 非空（默认为1） 1为必修 2为限选 3为任选 4为课外实验（课设） 5为兴趣
     */
    @Min(value = 1, message = "课程性质 应为数字1-5")
    @Max(value = 5, message = "课程性质 应为数字1-5")
    @NotNull(message = "课程性质 不能为空")
    private long courseNature;

    /**
     * 功能描述:是否有课内实验</br>
     * （默认为1） 1为没有 2为有
     */
    @Min(value = 1, message = "是否有课内实验 应为数字1-2")
    @Max(value = 2, message = "是否有课内实验 应为数字1-2")
    @NotNull(message = "是否有课内实验 不能为空")
    private long haveInClassExperiment;

    /**
     * 功能描述:考核方式</br>
     * 非空（默认为1） 1为考试 2为考察
     */
    @Min(value = 1, message = "考核方式 应为数字1-2")
    @Max(value = 2, message = "考核方式 应为数字1-2")
    @NotNull(message = "考核方式 不能为空")
    private long examinationMethod;

    /**
     * 功能描述:学分
     */
    @NotNull(message = "学分 不能为空")
    private float credit;

    /**
     * 功能描述:成绩类型</br>
     * 非空（默认为1） 1为百分制 2为等级制
     */
    @Min(value = 1, message = "成绩类型 应为数字1-2")
    @Max(value = 2, message = "成绩类型 应为数字1-2")
    @NotNull(message = "考核方式 不能为空")
    private long gradeType;

    /**
     * 功能描述:备注
     */
    @Size(min = 0, max = 200, message = "备注 限制200字")
    @NotNull(message = "备注 不能为空")
    private String note;

}
